#include <stdio.h>
#include <stdbool.h>
#define DOTENV_IMPLEMENTATION
#include "dotenv.hol.h"

int main() {
    // 加载.env文件
    // dotenv_load(0);
    dotenv_load_from_file("fuck.env", 0);
    // 数据库配置
    printf("数据库配置:\n");
    dotenv_print_key("DATABASE_HOST");    // 打印键名
    dotenv_print_value("DATABASE_HOST");  // 打印值
    printf("主机: %s\n", dotenv_get("DATABASE_HOST"));
    int port = dotenv_get_as_int("DATABASE_PORT", 3306);
    printf("端口(int测试): %d\n", port);
    bool debug = dotenv_get_as_bool("DEBUG", false);
    printf("DEBUG(bool测试): %s\n", debug ? "true" : "false");
    // 使用类型转换获取端口号
    printf("端口: %d\n", dotenv_get_as_int("DATABASE_PORT", 3306));
    printf("用户: %s\n", dotenv_get_as_string("DATABASE_USER", "root"));
    printf("密码: %s\n", dotenv_get("DATABASE_PASS"));
    
    // API配置
    printf("\nAPI配置:\n");
    printf("密钥: %s\n", dotenv_get("API_KEY"));
    printf("URL: %s\n", dotenv_get("API_URL"));
    printf("完整URL: %s\n", dotenv_get("FULL_URL"));
    
    // 迭代所有变量
    printf("\n共加载 %zu 个变量:\n", dotenv_count_vars());
    for (size_t i = 0; i < dotenv_count_vars(); i++) {
        const char* key;
        const char* value;
        if (dotenv_iter(i, &key, &value)) {
            dotenv_print_key(key);
            printf("  %s\n", value);
        }
    }
    
    // 清理
    dotenv_clear();
    return 0;
}